Skip to main content

Script

O bloco "Script" permite a utilização de comandos dentro do Digital Contact Bots, tornando o fluxo mais versátil e permitindo a execução de funções programáveis dentro do bot. Com ele, é possível:

  • manipular variáveis
  • criar validações
  • acessar APIs
  • realizar integrações externas ao Digital Contact Bots
  • entre outras funcionalidades

Configurações do bloco "Script" no Digital Contact Bots

O bloco "Script" pode ser encontrado no menu lateral esquerdo, na seção “Programação”:

Image 5

Ao ser inserido no fluxo, o bloco será exibido da seguinte forma:

Image 9

O menu lateral direito contém apenas o botão “Editar script”:

Image 2

Ao clicar em Editar script, será exibido o modal de edição de scripts:

Image 1

O Editor de Script possui os seguintes elementos:

  1. Adicionar variáveis: adiciona variáveis (globais ou do fluxo) ao editor de scripts.

Image 4

  1. Carregar Templates: este botão insere um código inicial (template) no editor de scripts.
    • Ele só funciona se o editor estiver vazio; caso contrário, permanecerá desabilitado.

Image 3

  1. Editor de código

    O script pode utilizar diferentes campos dentro do response:
    a. messages: array de mensagens enviadas ao cliente durante a execução do bloco de "script". (Pode incluir mensagens fixas ou com variáveis);
    b. clientMessage: simula uma mensagem do cliente. (Funciona apenas no WebChat e não interage com IA, rotas de fuga ou variáveis globais);

    • No histórico, aparecerá com o nome “Via Script”, em vez de “Usuário”.

    Image 7

    c. insertTags: Array de strings contendo as tags adicionadas ao fluxo no final da execução do script.

    • As tags podem ser criadas automaticamente pelo bloco, caso ainda não existam.

    • Como Testar:

      1. insira um novo bloco de "Script";
      2. verifique se o template está de acordo com a descrição;
      3. executar o fluxo;
      4. no relatório de Histórico de Eventos, verifique se as tags foram adicionadas corretamente;

    d. updateVariables: Array de objetos que cria ou atualiza variáveis dentro do fluxo.

  2. Cancelar

  3. Salvar

Pontos de atenção

O menu de configurações do bloco exibe alertas caso algumas regras não sejam atendidas:

  • bloco sem script cadastrado;
  • script sem finalização;

Image 6

Templates de Script

Abaixo estão alguns exemplos simples dos scripts mais comuns usados no bloco de "Script".

Consumo de APIs:

  • este script consome a API do ViaCEP para obter informações de endereço.

// Valor inicial fornecido para buscar informações do endereço const inputValue = "$$valor$$";

// Removendo caracteres indesejados (hífens, no caso) do valor fornecido const sanitizedValue = inputValue.replace(/-/g, '');

// Fazendo uma requisição à API do ViaCEP para obter dados do endereço com base no valor fornecido const { data: addressData } = await axios.get(https://viacep.com.br/ws/${sanitizedValue}/json/);

// Inicializando o texto que irá conter as informações do endereço let addressInfoText = 'Informações do Endereço:\n';

// Iterando sobre os dados do endereço obtidos para formatar o texto de saída for (let key in addressData) { addressInfoText += - ${key}: ${addressData[key]}\n; }

// Criando a resposta final com as mensagens de informações do endereço e variáveis atualizadas const response = { messages: [ addressInfoText // Adicionando o texto no bloco seguinte com as informações do endereço à lista de mensagens ], updateVariables: [ addressData: JSON.stringify(addressData), // Convertendo os dados do endereço em formato JSON e atualizando a variável addressData já existente no fluxo da Boteria , ] };

// Retornando a resposta final done(response);

  • Este script realiza uma regra de três para calcular um valor proporcional.

// Valores conhecidos const knownValue1 = "$$valor1$$"; const knownEquivalentValue1 = "$$equivalenteValor1$$";

// Valor desconhecido const unknownValue2 = "$$valor2$$";

// Aplicando a regra de três para encontrar o valor desconhecido (x) const unknownEquivalentValue2 = (unknownValue2 * knownEquivalentValue1) / knownValue1;

// Mensagem com o resultado const resultMessage = Se ${knownValue1} é equivalente a ${knownEquivalentValue1}, então ${unknownValue2} é equivalente a ${unknownEquivalentValue2}.;

// Criando o objeto de resposta const response = { messages: [ resultMessage // Adicionando a mensagem com o resultado à lista de mensagens ], insertTags: [ “newTag” // Adiciona a tag newTag ao fluxo ], updateVariables: [ { "equivalenteValor2": unknownEquivalentValue2, // Atualizando a variável com o resultado encontrado }, ] };

done(response); // Necessário para retornar a resposta final

Observação: embora o bloco de "Script" possa realizar requisições HTTP, é recomendado utilizar o bloco APIv2 para esse propósito.

  • Vantagem: Usando o APIv2, você pode visualizar as requisições nos relatórios e identificar possíveis erros.

Uma boa prática de utilização é realizar a chamada com o bloco de APIv2 e caso necessário em seguida utilizar o bloco de script para fazer a manipulação e tratamento dos dados.

Melhorias

Este botão insere um código inicial (template) no editor de código, caso ele esteja vazio.
Caso contrário, o botão permanecerá desabilitado.

Image 8

Limitações e Processamento do Bloco "Script"

Processamento de Variáveis

  • Todas as variáveis delimitadas por $$ são substituídas pelo respectivo valor.
    • Exemplo: let nome = "$$nome$$"; será processado como let nome = "João";.

Escape de Caracteres

  • Apenas os seguintes caracteres são escapados dentro das variáveis:
    • \\n (quebra de linha com escape) = \n
    • ' (aspas simples) = \'
    • " (aspas duplas) = \"
    • ` (crase) = ```
    • \ (contrabarra) = \\

Quebra de Linha

  • Tanto \n quanto \\n são aceitos para representar quebras de linha.
    • Exemplo: "Nome:\nJoão da Silva" será processado como:
      Nome:
      João da Silva
    • Exemplo: "Nome:\\nJoão da Silva" será processado como:
      Nome:
      João da Silva